/*
 * fifo.h
 *
 *  Created on: 2016年6月30日
 *      Author: pengzhikang
 */

#ifndef _FIFO_H
#define _FIFO_H 1

#include "mtask.h"
/**
 * 	缓冲区结构体
 * 	buf 缓冲区指针
 * 	p(push) 下一个数据写入位置	q(pop) 下一个数据读出位置
 *	size 缓冲区的总字节数	free 缓冲区的空闲字节数
 *	flags	记录缓冲区是否溢出
 */
struct FIFO32 {
	int *buf;
	int p, q, size, free, flags;
	struct TASK *task;
};

void fifo32_init(struct FIFO32 *fifo, int size, int *buf, struct TASK *task);
int fifo32_put(struct FIFO32 *fifo, int data);
int fifo32_get(struct FIFO32 *fifo);
int fifo32_status(struct FIFO32 *fifo);

#endif
